﻿using ProyectoDeTesis.Controladores;
using ProyectoDeTesis.Modelos.Filtros;
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class Perfil : Form
    {
        private int pantalla_id = 3;
        private PerfilController perfilController = new PerfilController();
        
        private int idPerfilSeleccionado = 0;

        public Perfil()
        {
            InitializeComponent();
            cargarComboPerfil();
            DateTimeFFin.Value = DateTime.Now.Date;
            DateTimeFInicio.Value = DateTime.Now.Date;
        }

        private void cargarComboPerfil()
        {
            List<ProyectoDeTesis.Perfil> listaPerfil = perfilController.CargarPerfil();

            ProyectoDeTesis.Perfil perfilDefault = new ProyectoDeTesis.Perfil();

            perfilDefault.id = 0;
            perfilDefault.nombre = "Seleccione Perfil";

            listaPerfil.Insert(0, perfilDefault);

            CmbPerfil.DataSource = listaPerfil;
            CmbPerfil.DisplayMember = "nombre";
            CmbPerfil.ValueMember = "id";
            DataGridBusqueda.DataSource = null;
        }

        private void BtnNuevo_Click(object sender, EventArgs e)
        {
            NuevoPerfil nuevo = new NuevoPerfil();
            nuevo.ShowDialog(this);
            cargarTabla();
        }

        private void BtnEdit_Click(object sender, EventArgs e)
        {
            if (this.idPerfilSeleccionado > 0)
            {
                EditarPerfil editar = new EditarPerfil(this.idPerfilSeleccionado);
                editar.ShowDialog(this);
                if (editar.resultadoVentana) 
                {
                    cargarTabla();
                }
            }
            else {
                MessageBox.Show("Debe seleccionar una fila primero");
            }
        }

        private void cargarTabla()
        {
            FiltroPerfil filtro = new FiltroPerfil();
            filtro.idPerfil = 0;
            filtro.fechaInicio = DateTime.Now.Date;
            filtro.fechaFin = DateTime.Now.Date;

            mostrarDatosTabla(filtro);
        }

        private void mostrarDatosTabla(FiltroPerfil filtro) {
            List<ProyectoDeTesis.Perfil> listaPerfil = perfilController.BuscarPerfilesFiltro(filtro);

            DataGridBusqueda.DataSource = listaPerfil;

            //DataGridBusqueda.Columns[2].Visible = false;
            DataGridBusqueda.Columns[0].Visible = false;
            DataGridBusqueda.Columns[1].HeaderText = "Nombre";
            DataGridBusqueda.Columns[2].HeaderText = "Descripción";
            DataGridBusqueda.Columns[3].HeaderText = "Estado";
            DataGridBusqueda.Columns[4].HeaderText = "Fecha de Registro";
            DataGridBusqueda.Columns[5].Visible = false;
            DataGridBusqueda.Columns[6].Visible = false;
            DataGridBusqueda.Columns[1].Width = 120;
            DataGridBusqueda.Columns[2].Width = 130;
            DataGridBusqueda.Columns[3].Width = 100;
            DataGridBusqueda.Columns[4].Width = 160;
        }

        private void BtnRemover_Click(object sender, EventArgs e)
        {
            if (this.idPerfilSeleccionado > 0)
            {
                if (perfilController.eliminarPerfil(this.idPerfilSeleccionado))
                {
                    MessageBox.Show("Se eliminó el perfil correctamente.");
                    cargarTabla();
                }
            }
            else
            {
                MessageBox.Show("Debe seleccionar una fila primero.");
            }
        }

        private void BtnPerfil_Click(object sender, EventArgs e)
        {
            this.Dispose();
            Perfil perfil = new Perfil();
            perfil.ShowDialog(this);
        }

        private void BtnPersonal_Click(object sender, EventArgs e)
        {
            Personal personal = new Personal();
            personal.ShowDialog(this);
        }

        private void BtnSearch_MouseLeave(object sender, EventArgs e)
        {  
           System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
           ToolTip1.SetToolTip(BtnSearch, "Buscar");
        }

        private void BtnLimpiar_MouseLeave(object sender, EventArgs e)
        {
            System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
            ToolTip1.SetToolTip(BtnLimpiar, "Limpiar Campos");
        }

        private void BtnAsignarPrivilegio_Click(object sender, EventArgs e)
        {
            if (this.idPerfilSeleccionado > 0)
            {
                AsignarPrivilegio asignar = new AsignarPrivilegio(idPerfilSeleccionado);
                asignar.ShowDialog(this);
            }
            else
            {
                MessageBox.Show("Debe seleccionar una fila primero.");
            }

        }

        private void selectedRowsButton_Click(object sender, System.EventArgs e)
        {
            int selectedRowCount =
                DataGridBusqueda.Rows.GetRowCount(DataGridViewElementStates.Selected);
        }

        private void DataGridBusqueda_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            
        }

        private void CmbPerfil_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void BtnSearch_Click(object sender, EventArgs e)
        {
            FiltroPerfil filtro = new FiltroPerfil();
            filtro.idPerfil = Convert.ToInt32(CmbPerfil.SelectedValue);
            filtro.fechaInicio = DateTimeFInicio.Value;
            filtro.fechaFin = DateTimeFFin.Value;

            mostrarDatosTabla(filtro);
        }

        private void BtnLimpiar_Click(object sender, EventArgs e)
        {
            cargarComboPerfil();
            DateTimeFFin.Value = DateTime.Now.Date;
            DateTimeFInicio.Value = DateTime.Now.Date;
        }

        private void btnadministrarPersonal_Click(object sender, EventArgs e)
        {
            Personal personal = new Personal();
            personal.ShowDialog(this);
        }

        private void btnadministrarPerfil_Click(object sender, EventArgs e)
        {
            Perfil perfil = new Perfil();
            perfil.ShowDialog(this);
        }

        private void btnAuditoria_Click(object sender, EventArgs e)
        {
            Auditoria auditoria = new Auditoria();
            auditoria.ShowDialog();
        }

        private void DataGridBusqueda_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = this.DataGridBusqueda.Rows[e.RowIndex];

                this.idPerfilSeleccionado = Convert.ToInt32(row.Cells[0].Value);
            }
        }

        private void administrarPuertaDeEmbarqueToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PuertaEmbarque puerta = new PuertaEmbarque();
            puerta.ShowDialog(this);
        }

        private void consultarDistanciaAPistaPrincipalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ConsultarDistanciaPistaPrincipal consulta = new ConsultarDistanciaPistaPrincipal();
            consulta.ShowDialog(this);
        }

        private void configuraciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ProyectoDeTesis.Vistas.Configuracion config = new ProyectoDeTesis.Vistas.Configuracion();
            config.ShowDialog(this);
        }

        private void historialDeSimulaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            HistorialSimulacion historial = new HistorialSimulacion();
            historial.ShowDialog(this);
        }

        private void iniciarSimulaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Simulacion simulacion = new Simulacion();
            simulacion.ShowDialog(this);
        }

        private void lecturaDeVuelosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Lectura lectura = new Lectura();
            lectura.ShowDialog(this);
        }

        private void administrarVuelosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Vuelo vuelo = new Vuelo();
            vuelo.ShowDialog(this);
        }

        private void programaciónDeVuelosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Plan plan = new Plan();
            plan.ShowDialog(this);
        }

        private void pendientesDeAprobaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PendienteAprobacion pendiente = new PendienteAprobacion();
            pendiente.ShowDialog(this);
        }

        private void estadoDeVuelosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            EstadoVuelos estado = new EstadoVuelos();
            estado.ShowDialog(this);
        }
    }
}
